﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using FacturacionII.Clases;
namespace FacturacionII.Formularios
{
    public partial class frmMaestroProductos : FacturacionII.Formularios.frmMaestro
    {
        clsProducto objProducto;
        clsFamilia objFamilia;
        frmPrincipal principal;
        public frmMaestroProductos()
        {
            InitializeComponent();
        }

        private void frmProductos_Load(object sender, EventArgs e)
        {
            objFamilia = new clsFamilia();
            this.grdListado.AutoGenerateColumns = false;
            this.CardarDatosGridView();
            this.AsignarPropiedadesDataGridView();
            this.cboCategoria.DataSource = objFamilia.CargarComboBox();
            cboCategoria.SelectedIndex = -1;
            cboCategoria.DisplayMember = "DESCRIPCION";
            cboCategoria.ValueMember = "CODIGO";
            this.txtCriterioBuscar.CharacterCasing = CharacterCasing.Upper;
            this.txtDescripcion.CharacterCasing = CharacterCasing.Upper;
            this.sbMantenimiento.ExpandedPanel = sbpVer;
            this.stcPaneles.SelectedTab = stiListado;
            this.txtCriterioBuscar.Select();
        }

        public void CardarDatosGridView()
        { 
            objProducto = new clsProducto();
            grdListado.DataSource = objProducto.CargarDatosGridView();
        }

        public void AsignarPropiedadesDataGridView()
        {
            grdListado.AutoGenerateColumns = false;
            grdListado.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            grdListado.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
            grdListado.Columns[0].DataPropertyName = "CODIGO";
            grdListado.Columns[1].DataPropertyName = "DESCRIPCION";
            grdListado.Columns[2].DataPropertyName = "IDFAMILIA";
            grdListado.Columns[3].DataPropertyName = "FAMILIA";
            grdListado.Columns[1].Width = 250; //Banco
            grdListado.Columns[3].Width = 250; //Fecha de emision de cheque
            
        }

        private void btnNuevoGuardar_Click(object sender, EventArgs e)
        {
            objProducto = new clsProducto();
            objProducto.Guardar(txtDescripcion.Text, 
                int.Parse(cboCategoria.SelectedValue.ToString()), 1);
            stcPaneles.SelectedTab = stiListado;
            grdListado.DataSource = objProducto.CargarDatosGridView();
            sbMantenimiento.ExpandedPanel = sbpVer;
            stcPaneles.SelectedTab = stiListado;
        }

        private void grdListado_DoubleClick(object sender, EventArgs e)
        {
            string codigo, descripcion, familias, codigoFamilia;

            codigo = grdListado.CurrentRow.Cells[0].Value.ToString();
            descripcion = grdListado.CurrentRow.Cells[1].Value.ToString();
            codigoFamilia = grdListado.CurrentRow.Cells[2].Value.ToString();
            familias = grdListado.CurrentRow.Cells[3].Value.ToString();
            
            stcPaneles.SelectedTab = stiRegistro;
            sbMantenimiento.ExpandedPanel = sbpModificar;
            txtDescripcion.Select();
            txtCodigo.Text = codigo;
            txtDescripcion.Text = descripcion;
            
            cboCategoria.SelectedText = familias;
            cboCategoria.SelectedValue = codigoFamilia;
            objProducto = new clsProducto();
            cboCategoria.DataSource = objProducto.CargarComboBox();
        }

        private void sbpNuevo_Click(object sender, EventArgs e)
        {
            this.stcPaneles.SelectedTab = stiRegistro;
            this.LimpiarControlesText();
            this.txtDescripcion.Select();
        }

        public void LimpiarControlesText()
        {
            txtCodigo.Text = "";
            txtCriterioBuscar.Text = "";
            txtDescripcion.Text = "";
        }

        private void btnNuevoLimpiar_Click(object sender, EventArgs e)
        {
            this.LimpiarControlesText();
        }

        private void btnNuevoCancelar_Click(object sender, EventArgs e)
        {
            this.LimpiarControlesText();
            this.sbMantenimiento.ExpandedPanel = sbpVer;
            this.stcPaneles.SelectedTab = stiListado;
        }

        private void btnNuevoSalir_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnModificarSeleccionar_Click(object sender, EventArgs e)
        {
            string codigo, descripcion, familias, codigoFamilia;

            codigo = grdListado.CurrentRow.Cells[0].Value.ToString();
            descripcion = grdListado.CurrentRow.Cells[1].Value.ToString();
            codigoFamilia = grdListado.CurrentRow.Cells[2].Value.ToString();
            familias = grdListado.CurrentRow.Cells[3].Value.ToString();
            stcPaneles.SelectedTab = stiRegistro;
            txtDescripcion.Select();
            txtDescripcion.Text = descripcion;
            txtCodigo.Text = codigo;
            cboCategoria.SelectedItem = codigoFamilia;
        }

        private void btnModificarGuardarCambios_Click(object sender, EventArgs e)
        {
            objProducto = new clsProducto();
            principal = new frmPrincipal();

            objProducto.GuardarCambios(
                int.Parse(txtCodigo.Text.Trim()),
                txtDescripcion.Text.Trim(),
                int.Parse(cboCategoria.SelectedValue.ToString()),
                principal.getIdUsuario());
            MessageBox.Show("SE HA GUARDADO LOS CAMBIOS CORRECTAMENTE", "SISTEMA FACTURACION",
                MessageBoxButtons.OK, MessageBoxIcon.Information);
            this.grdListado.DataSource = objProducto.CargarDatosGridView();
            sbMantenimiento.ExpandedPanel = sbpVer;
            stcPaneles.SelectedTab = stiListado;
        }

        private void btnModificarCancelar_Click(object sender, EventArgs e)
        {
            this.LimpiarControlesText();
            sbMantenimiento.ExpandedPanel = sbpVer;
            stcPaneles.SelectedTab = stiListado;
        }

        private void btnModificarSalir_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btmEliminarEliminar_Click(object sender, EventArgs e)
        {
            string codigo, descripcion;
            objProducto = new clsProducto();
            codigo = grdListado.CurrentRow.Cells[0].Value.ToString();
            descripcion = grdListado.CurrentRow.Cells[1].Value.ToString();

            DialogResult respuesta;
            respuesta = MessageBox.Show("¿DESEA ELIMINAR EL PRODUCTO " + descripcion + " ?",
                "SISTEMA DE FACTURACION", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (respuesta == DialogResult.Yes) 
            {
                objProducto.Eliminar(int.Parse(codigo));
            }
            this.grdListado.DataSource = objProducto.CargarDatosGridView();
            sbMantenimiento.ExpandedPanel = sbpVer;
            stcPaneles.SelectedTab = stiListado;
        }

        private void btnEliminarSalir_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnVerSalir_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void txtCriterioBuscar_TextChanged(object sender, EventArgs e)
        {
            objProducto = new clsProducto();
            if (string.Empty == txtCriterioBuscar.Text.Trim())
            {
                grdListado.DataSource = objProducto.CargarDatosGridView();
            }
            else
            {
                grdListado.DataSource = objProducto.BuscarDatosGridView(txtCriterioBuscar.Text.Trim());
            }
        }
    }
}
